package pyp.navigation.setting;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import pyp.navigation.R;
import pyp.navigation.main.MainActivity;
import pyp.navigation.main.menu.RightMenuFragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class SettingFragment extends Fragment {
private View parentView;
private MainActivity parentActivity;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
parentView = inflater.inflate(R.layout.setting, container, false);
if (getActivity() instanceof MainActivity)
parentActivity = (MainActivity) getActivity();
initView(parentView);
return parentView;
}
/**
* 初始化组件
*/
private void initView(View parentView) {
// 设置滑动菜单的位置(左边、右边或者左右两边都有)
RadioGroup mode = (RadioGroup) parentView.findViewById(R.id.mode);
// 默认勾选双栏
mode.check(R.id.left_right);
mode.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
SlidingMenu sm = parentActivity.getSlidingMenu();
switch (checkedId) {
case R.id.left:
sm.setMode(SlidingMenu.LEFT);
sm.setShadowDrawable(R.drawable.main_shadow);
break;
case R.id.right:
sm.setMode(SlidingMenu.RIGHT);
sm.setShadowDrawable(R.drawable.main_shadowright);
break;
case R.id.left_right:
sm.setMode(SlidingMenu.LEFT_RIGHT);
sm.setSecondaryMenu(R.layout.main_menu_frame_two);
parentActivity.getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame_two,
new RightMenuFragment()).commit();
sm.setSecondaryShadowDrawable(R.drawable.main_shadowright);
sm.setShadowDrawable(R.drawable.main_shadow);
}
}
});
// 设置触摸的模式(全屏触摸滑动、边缘触摸滑动或者触摸不能滑动)
RadioGroup touchAbove = (RadioGroup) parentView.findViewById(R.id.touch_above);
touchAbove.check(R.id.touch_above_full);
touchAbove.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.touch_above_full:
parentActivity.setTouchMode(1);
break;
case R.id.touch_above_margin:
parentActivity.setTouchMode(2);
break;
case R.id.touch_above_none:
parentActivity.setTouchMode(3);
break;
}
}
});
// 设置滑动菜单滑动时缩放的效果(值越大效果越明显)
SeekBar scrollScale = (SeekBar) parentView.findViewById(R.id.scroll_scale);
scrollScale.setMax(1000);
scrollScale.setProgress(333);
scrollScale.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
parentActivity.getSlidingMenu().setBehindScrollScale((float) seekBar.getProgress() / seekBar.getMax());
}
});
// 设置滑动菜单时下方视图的宽度(值越大宽度越大)
SeekBar behindWidth = (SeekBar) parentView.findViewById(R.id.behind_width);
behindWidth.setMax(1000);
behindWidth.setProgress(750);
behindWidth.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
float percent = (float) seekBar.getProgress() / seekBar.getMax();
parentActivity.getSlidingMenu().setBehindWidth((int) (percent * parentActivity.getSlidingMenu().getWidth()));
parentActivity.getSlidingMenu().requestLayout();
}
});
// 设置滑动菜单滑动时的阴影效果(值越大效果越明显)
CheckBox shadowEnabled = (CheckBox) parentView.findViewById(R.id.shadow_enabled);
shadowEnabled.setChecked(true);
shadowEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked)
parentActivity.getSlidingMenu().setShadowDrawable(parentActivity.getSlidingMenu().getMode() == SlidingMenu.LEFT ? R.drawable.main_shadow: R.drawable.main_shadowright);
else
parentActivity.getSlidingMenu().setShadowDrawable(null);
}
});
SeekBar shadowWidth = (SeekBar) parentView.findViewById(R.id.shadow_width);
shadowWidth.setMax(1000);
shadowWidth.setProgress(75);
shadowWidth.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
float percent = (float) seekBar.getProgress() / (float) seekBar.getMax();
int width = (int) (percent * (float) parentActivity.getSlidingMenu().getWidth());
parentActivity.getSlidingMenu().setShadowWidth(width);
parentActivity.getSlidingMenu().invalidate();
}
});
// 设置滑动菜单滑动时渐入渐出的效果(值越大效果越明显)
CheckBox fadeEnabled = (CheckBox) parentView.findViewById(R.id.fade_enabled);
fadeEnabled.setChecked(true);
fadeEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
parentActivity.getSlidingMenu().setFadeEnabled(isChecked);
}
});
SeekBar fadeDeg = (SeekBar) parentView.findViewById(R.id.fade_degree);
fadeDeg.setMax(1000);
fadeDeg.setProgress(666);
fadeDeg.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
parentActivity.getSlidingMenu().setFadeDegree(
(float) seekBar.getProgress() / seekBar.getMax());
}
});
}
}